1. Technical Field
The present invention relates to an asynchronous messaging paradigm, and more particularly, to an attribute-based publish/subscribe paradigm which quickly scales in accordance with the number of consumers and producers.
2. Description of the Related Art
Publish/subscribe (pub/sub) schemes employ an asynchronous communication pattern for communication among application components. Publishers and subscribers of messages are decoupled from each other and interact through an intermediary—i.e., a pub/sub system. A subscriber registers its interest in certain kinds of messages with the pub/sub system in the form of a subscription. Publishers post messages to the pub/sub system. The system matches messages (e.g., publications) to subscriptions and delivers messages to interested subscribers.
Conventional pub/sub systems are based on either a centralized model or a peer-to-peer model. With the centralized model, publishers and subscribers select a single server and directly connect to that server. A centralized pub/sub system does not provide for adequate scaling because they are configured as a full mesh topology in which subscriptions and events are replicated on each server. Moreover, these centralized systems require heavy administration to handle highly dynamic workloads, and only provide limited tolerance in the case of a data center failure.
In the peer-to-peer model, the publishers and subscribers serve as the pub/sub servers. Each node is responsible for a particular subset of subscriptions and events. As a result, heavily loaded servers exist due to uneven distribution of subscriptions and events. While load balancing mechanisms may be implemented to provide a more even distribution, such load balancing mechanisms tend to be very complex and result in other performance penalties.
Neither the centralized model, nor the peer-to-peer model, is suited to handle constraints imposed by recent trends associated with cloud computing and sense-and-response applications. Sense-and-respond applications relate to applications which adapt their behavior to events in either the cyber world or real world, based on continuous readings from potentially large numbers of physical or logical sensors. Cloud computing typically involves a computing environment in which shared resources, software or information is provided to computers or other devices on-demand over the Internet. Conventional pub/sub systems are not configured to meet the requirements imposed by cloud computing and sense- and response applications.